home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / scheme / schmrprt / r395rs.lha / intro.tex < prev    next >
Encoding:
Text File  |  1989-03-12  |  7.4 KB  |  153 lines

  1. \clearextrapart{Introduction}
  2.  
  3. \label{historysection}
  4.  
  5. Programming languages should be designed not by piling feature on top of
  6. feature, but by removing the weaknesses and restrictions that make additional
  7. features appear necessary.  Scheme demonstrates that a very small number
  8. of rules for forming expressions, with no restrictions on how they are
  9. composed, suffice to form a practical and efficient programming language
  10. that is flexible enough to support most of the major programming
  11. paradigms in use today.
  12.  
  13. %Scheme has influenced the evolution of Lisp.
  14. Scheme
  15. was one of the first programming languages to incorporate first class
  16. procedures as in the lambda calculus, thereby proving the usefulness of
  17. static scope rules and block structure in a dynamically typed language.
  18. Scheme was the first major dialect of Lisp to distinguish procedures
  19. from lambda expressions and symbols, to use a single lexical
  20. environment for all variables, and to evaluate the operator position
  21. of a procedure call in the same way as an operand position.  By relying
  22. entirely on procedure calls to express iteration, Scheme emphasized the
  23. fact that tail-recursive procedure calls are essentially goto's that
  24. pass arguments.  Scheme was the first widely used programming language to
  25. embrace first class escape procedures, from which all known
  26. sequential control structures can be synthesized.  More recently, building
  27. upon the design of generic arithmetic in Common Lisp, Scheme introduced
  28. the concept of exact and inexact numbers.
  29. % A few
  30. %of these innovations have recently been incorporated into Common Lisp, while
  31. %others remain to be adopted.
  32.  
  33. \todo{Ramsdell:
  34. I would like to make a few comments on presentation.  The most
  35. important comment is about section organization.  Newspaper writers
  36. spend most of their time writing the first three paragraphs of any
  37. article.  This part of the article is often the only part read by
  38. readers, and is important in enticing readers to continue.  In the
  39. same way, The first page is most likely to be the only page read by
  40. many SIGPLAN readers.  If I had my choice of what I would ask them to
  41. read, it would be the material in section 1.1, the Semantics section
  42. that notes that scheme is lexically scoped, tail recursive, weakly
  43. typed, ... etc.  I would expand on the discussion on continutations,
  44. as they represent one important difference between Scheme and other
  45. languages.  The introduction, with its history of scheme, its history
  46. of scheme reports and meetings, and acknowledgements giving names of
  47. people that the reader will not likely know, is not that one page I
  48. would like all to read.  I suggest moving the history to the back of
  49. the report, and use the first couple of pages to convince the reader
  50. that the language documented in this report is worth studying.
  51. }
  52.  
  53. \subsection*{Background}
  54.  
  55. \vest The first description of Scheme was written in
  56. 1975~\cite{Scheme75}.  A revised report~\cite{Scheme78}
  57. \todo{italicize or not?} appeared in 1978, which described the evolution
  58. of the language as its MIT implementation was upgraded to support an
  59. innovative compiler~\cite{Rabbit}.  Three distinct projects began in
  60. 1981 and 1982 to use variants of Scheme for courses at MIT, Yale, and
  61. Indiana University~\cite{Rees82,MITScheme,Scheme311}.  An introductory
  62. computer science textbook using Scheme was published in
  63. 1984~\cite{SICP}.
  64.  
  65. %\vest As might be expected of a language used primarily for education and
  66. %research, Scheme has always evolved rapidly.  This was no problem when
  67. %Scheme was used only within MIT, but 
  68. \vest As Scheme became more widespread,
  69. local dialects began to diverge until students and researchers
  70. occasionally found it difficult to understand code written at other
  71. sites.
  72. Fifteen representatives of the major implementations of Scheme therefore
  73. met in October 1984 to work toward a better and more widely accepted
  74. standard for Scheme.
  75. %Participating in this workshop were Hal Abelson, Norman Adams, David
  76. %Bartley, Gary Brooks, William Clinger, Daniel Friedman, Robert Halstead,
  77. %Chris Hanson, Christopher Haynes, Eugene Kohlbecker, Don Oxley, Jonathan Rees,
  78. %Guillermo Rozas, Gerald Jay Sussman, and Mitchell Wand.  Kent Pitman
  79. %made valuable contributions to the agenda for the workshop but was
  80. %unable to attend the sessions.
  81. %
  82. %Subsequent electronic mail discussions and committee work completed the
  83. %definition of the language.
  84. %Gerry Sussman drafted the section on numbers, Chris Hanson drafted the
  85. %sections on characters and strings, and Gary Brooks and William Clinger
  86. %drafted the sections on input and output.
  87. %William Clinger recorded the decisions of the workshop and
  88. %compiled the pieces into a coherent document.
  89. %The ``Revised revised report on Scheme''~\cite{RRRS}
  90. Their report~\cite{RRRS}
  91. was published at MIT and Indiana University in the summer of 1985.
  92. Another round of revision took place in the spring of 1986~\cite{R3RS}.
  93. %, again accomplished
  94. %almost entirely by electronic mail, resulted in the present report.
  95. The present report reflects further revisions agreed upon in a meeting
  96. that preceded the 1988 ACM Conference on Lisp and Functional Programming.
  97.  
  98. %\vest The number 3 in the title is part of the title, not a reference to
  99. %a footnote.  The word ``revised'' is raised to the third power because
  100. %the report is a revision of a report that was already twice revised.
  101.  
  102. \todo{Write an editors' note?}
  103.  
  104.  
  105. \medskip
  106.  
  107. We intend this report to belong to the entire Scheme community, and so
  108. we grant permission to copy it in whole or in part without fee.  In
  109. particular, we encourage implementors of Scheme to use this report as
  110. a starting point for manuals and other documentation, modifying it as
  111. necessary.
  112.  
  113.  
  114.  
  115.  
  116. \subsection*{Acknowledgements}
  117.  
  118. We would like to thank the following people for their comments and
  119. criticisms: Alan Bawden, George Carrette, Andy Cromarty,
  120. Andy Freeman, Richard Gabriel, Yekta G\"ursel, Ken Haase, Paul Hudak,
  121. Richard Kelsey, Chris Lindblad, Mark Meyer, Jim Miller, Jim Philbin,
  122. John Ramsdell, Guy Lewis Steele~Jr., Julie Sussman, Perry Wagle, Daniel Weise, and
  123. Henry Wu.  We thank Carol Fessenden, Daniel Friedman, and Christopher Haynes
  124. for permission to use text from the Scheme 311 version 4 reference
  125. manual.  We thank Texas Instruments, Inc.~for permission to use text
  126. from the {\em TI Scheme Language Reference Manual.} We gladly
  127. acknowledge the influence of manuals for MIT Scheme, T, Scheme 84,
  128. Common Lisp, and Algol 60.
  129.  
  130. \vest We also thank Betty Dexter for the extreme effort she put into
  131. setting this report in \TeX, and Donald Knuth for designing the program
  132. that caused her troubles.
  133.  
  134. \vest The Artificial Intelligence Laboratory of the
  135. Massachusetts Institute of Technology and the Computer Science
  136. Department of Indiana University supported the preparation of this
  137. report.  Support for the MIT work was provided in part by the Advanced
  138. Research Projects Agency of the Department of Defense under Office of
  139. Naval Research contract N00014-80-C-0505.  Support for the Indiana
  140. University work was provided by NSF grants NCS 83-04567 and NCS
  141. 83-03325.
  142.  
  143.  
  144. \todo{Steele:
  145.  
  146. [c] There should be a very clear message to the reader that Scheme certainly
  147. does owe debts to other sources, and one of them is Common Lisp.  While
  148. Scheme certainly has been the pioneer in the treatment of closures and
  149. functional programming in a Lisp framework, I think it is fair to say that
  150. Common lisp pioneered a rational (forgive the pun) treatment of numeric data
  151. types in a Lisp framework, and my impression is that Scheme learned
  152. something in this area from the Common Lisp experience.
  153. }